/**
 * <h3>CreateTbController</h3>
 * <p>创造空间管理控制器类</p>
 *
 * <h3>功能描述</h3>
 * <p>提供创造空间相关的操作接口，统一返回AjaxResult格式结果</p>
 * <p>支持用户创作空间的管理功能，包括查看个人创作、加入创作空间、移除创作等核心操作</p>
 * <p>所有接口均基于RESTful风格设计，配合SpringMVC注解实现标准化API输出</p>
 *
 * <h3>元数据</h3>
 * <ul>
 *    <li>作者：系统生成</li>
 *    <li>创建日期：2025年01月</li>
 * </ul>
 *
 * <h3>其他信息</h3>
 * <ul>
 *    <li>参考链接：<a href="https://fantastic-admin.hurui.me/guide/permission.html">权限控制文档</a></li>
 *    <li>示例代码：{@code new CreateTbController(createService)} </li>
 * </ul>
 *
 * @apiNote 接口用于AI创作空间管理，支持用户个性化创作体验
 * @implSpec 继承自 {@link BaseController}，复用返回封装等通用逻辑
 * @since 1.0.0
 */

package com.dnndo.web.controller.system;


import com.dnndo.common.core.controller.BaseController;
import com.dnndo.common.core.domain.AjaxResult;
import com.dnndo.common.utils.bean.BeanDtoVoUtil;
import com.dnndo.system.domain.dto.EnerateApiDTO;
import com.dnndo.system.domain.vo.EnerateApiVO;
import com.dnndo.system.service.ICreateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * 创造空间管理控制器类
 */
@RestController
@RequestMapping("/ai")
public class CreateTbController extends BaseController {

    private final ICreateService createService;

    @Autowired
    public CreateTbController(ICreateService createService) {
        this.createService = createService;
    }

    /**
     * 获取我的创作空间列表
     * @return AjaxResult 包含用户创作空间列表的响应结果
     * @see com.dnndo.system.domain.vo.EnerateApiVO
     */
    @PostMapping("/work")
    public AjaxResult work() {
        List<EnerateApiDTO> userWorks = createService.selectwork(getUserId());
        return AjaxResult.success(BeanDtoVoUtil.listVo(userWorks, EnerateApiVO.class));
    }

    /**
     * 加入我的创作空间
     * @param dto 包含加入创作空间相关信息的传输对象
     * @return AjaxResult 操作结果返回对象，包含成功或失败状态
     * @see com.dnndo.system.domain.dto.EnerateApiDTO
     */
    @PostMapping("/enerate/add")
    public AjaxResult add(@RequestBody EnerateApiDTO dto) {
        dto.setUserId(getUserId());
        return AjaxResult.success(createService.enerate_add(dto));
    }

    /**
     * 移除我的创作空间
     * @param dto 包含移除创作空间相关信息的传输对象
     * @return AjaxResult 操作结果返回对象，包含成功或失败状态
     * @see com.dnndo.system.domain.dto.EnerateApiDTO
     */
    @PostMapping("/enerate/del")
    public AjaxResult del(@RequestBody EnerateApiDTO dto) {
        return AjaxResult.success(createService.enerate_del(dto));
    }
}
